import

In [1]:
from PIL import Image

開檔

In [2]:
im = Image.open("sample.jpg")
In [3]:
im
Out[3]:
In [4]:
im.format
Out[4]:
'JPEG'
In [5]:
im.size
Out[5]:
(1280, 851)
In [6]:
im.mode
Out[6]:
'RGB'

製作小縮圖

In [7]:
new_size = (128, 128)
In [8]:
im.thumbnail(new_size) #直接更改 im
In [9]:
im
Out[9]:
In [10]:
im.size
Out[10]:
(128, 85)
In [11]:
im.save("sample_thumbnail.jpg", "JPEG")

裁切圖片

In [12]:
im = Image.open("sample.jpg")
In [13]:
new_im = im.crop((100,100,400,400)) #回傳新照片
In [14]:
new_im
Out[14]:

變更圖片大小 (更改比例)

In [15]:
im.resize((128, 128))
Out[15]:

直接對照片的 pixel 做操作囉

In [16]:
im = Image.open("sample.jpg")
im = im.resize((800, 600)) ##圖片小一點
In [17]:
for i in range(800):
    for j in range(600):
        r, g, b = im.getpixel((i, j))
        value = int(0.299*r + 0.587*g + 0.114*b)
        r = value
        g = value
        b = value
        im.putpixel((i,j), (r, g, b))
In [18]:
im
Out[18]:

把顏色顛倒

(r, g, b) => (255-r, 255-g, 255-b)

In [19]:
im = Image.open("sample.jpg")
im = im.resize((800, 600)) ##圖片小一點

new_im = Image.new("RGB", (800,600))
for i in range(800):
    for j in range(600):
        r, g, b = im.getpixel((i,j))
        r = 255-r
        g = 255-g
        b = 255-b
        new_im.putpixel((i,j), (r, g, b))
new_im
Out[19]:

Task 1: 顏色平移

In [20]:
new_im = Image.new("RGB", (800,600))

for i in range(800):
    for j in range(600):
        pass
        #add your code here
In [14]:
new_im
Out[14]:

繪圖

In [44]:
import random

Id, R, G, B = [],[],[],[]
for i in range(256):
    Id.append(i)
    R.append(0)
    G.append(0)
    B.append(0)
    
for i in range(256):
    R[i] = i

for i in range(1000000):
    x = random.uniform(0, 255) #平均分佈
    G[int(x)] += 1

    y = random.normalvariate(128, 50) #常態分佈
    if 0 <= y <= 255:
        B[int(y)] += 1
In [45]:
%matplotlib notebook
from matplotlib import pyplot
In [46]:
pyplot.figure(1)
pyplot.subplot(311)
pyplot.fill_between(Id, R, color='red')

pyplot.subplot(312)
pyplot.fill_between(Id, G, color='green')

pyplot.subplot(313)
pyplot.fill_between(Id, B, color='blue')
Out[46]:
<matplotlib.collections.PolyCollection at 0x10edbd320>
In [ ]:
 
In [ ]: